[PATCH 2/2] Revert "docs: kernel_feat.py: fix potential command injection"
authorSalvatore Bonaccorso <carnil@debian.org>
Sun, 4 Feb 2024 20:02:11 +0000 (21:02 +0100)
committerSalvatore Bonaccorso <carnil@debian.org>
Sun, 4 Feb 2024 20:28:21 +0000 (21:28 +0100)
This reverts commit e961f8c6966abbd486ff87549e29e53f3c69b685.

Gbp-Pq: Topic debian
Gbp-Pq: Name Revert-docs-kernel_feat.py-fix-potential-command-inj.patch

20 files changed:
Documentation/admin-guide/features.rst
Documentation/arch/arc/features.rst
Documentation/arch/arm/features.rst
Documentation/arch/arm64/features.rst
Documentation/arch/loongarch/features.rst
Documentation/arch/m68k/features.rst
Documentation/arch/mips/features.rst
Documentation/arch/nios2/features.rst
Documentation/arch/openrisc/features.rst
Documentation/arch/parisc/features.rst
Documentation/arch/s390/features.rst
Documentation/arch/sh/features.rst
Documentation/arch/sparc/features.rst
Documentation/arch/x86/features.rst
Documentation/arch/xtensa/features.rst
Documentation/powerpc/features.rst
Documentation/riscv/features.rst
Documentation/sphinx/kernel_feat.py
Documentation/translations/zh_CN/arch/loongarch/features.rst
Documentation/translations/zh_CN/arch/mips/features.rst

index 7651eca38227d0915fa77673877530eb25eb23f5..8c167082a84f9e889724f66d2d74e22cb6e40f83 100644 (file)
@@ -1,3 +1,3 @@
 .. SPDX-License-Identifier: GPL-2.0
 
-.. kernel-feat:: features
+.. kernel-feat:: $srctree/Documentation/features
index 49ff446ff744ccddf8f4c1fb6717b7878b673ca3..b793583d688a460d82967faab3336ed962cc44d9 100644 (file)
@@ -1,3 +1,3 @@
 .. SPDX-License-Identifier: GPL-2.0
 
-.. kernel-feat:: features arc
+.. kernel-feat:: $srctree/Documentation/features arc
index 0e76aaf68ecab2233df316602f0da9e47608c73c..7414ec03dd157c7ab6fc677f5a0af6fb93a88ec3 100644 (file)
@@ -1,3 +1,3 @@
 .. SPDX-License-Identifier: GPL-2.0
 
-.. kernel-feat:: features arm
+.. kernel-feat:: $srctree/Documentation/features arm
index 03321f4309d0be8acc1c8062626ec0d520ad5398..dfa4cb3cd3efa570755ffd428e89e413d09b8b84 100644 (file)
@@ -1,3 +1,3 @@
 .. SPDX-License-Identifier: GPL-2.0
 
-.. kernel-feat:: features arm64
+.. kernel-feat:: $srctree/Documentation/features arm64
index 009f44c7951f8a7fad377e3aa43e59f3c9a3a240..ebacade3ea454e2daf54ef0957ba1b49b4501412 100644 (file)
@@ -1,3 +1,3 @@
 .. SPDX-License-Identifier: GPL-2.0
 
-.. kernel-feat:: features loongarch
+.. kernel-feat:: $srctree/Documentation/features loongarch
index de7f0ccf7fc8edf4be22f4192832dd82c8b7069b..5107a21194724ec3c756d5f68689013b80ed6b33 100644 (file)
@@ -1,3 +1,3 @@
 .. SPDX-License-Identifier: GPL-2.0
 
-.. kernel-feat:: features m68k
+.. kernel-feat:: $srctree/Documentation/features m68k
index 6e0ffe3e73540041f670d4b8f8f724036b63936e..1973d729b29a98756de8c0192224af913f2ff5c6 100644 (file)
@@ -1,3 +1,3 @@
 .. SPDX-License-Identifier: GPL-2.0
 
-.. kernel-feat:: features mips
+.. kernel-feat:: $srctree/Documentation/features mips
index 89913810ccb5a0c4978c38141275be35ec40a08d..8449e63f69b2b4f0380b08891a113f6695c644cf 100644 (file)
@@ -1,3 +1,3 @@
 .. SPDX-License-Identifier: GPL-2.0
 
-.. kernel-feat:: features nios2
+.. kernel-feat:: $srctree/Documentation/features nios2
index bae2e25adfd642b6b98dbad6a6b1d0ba550c6ba7..3f7c40d219f2cc3e278eb9b77322a29fa82e4aea 100644 (file)
@@ -1,3 +1,3 @@
 .. SPDX-License-Identifier: GPL-2.0
 
-.. kernel-feat:: features openrisc
+.. kernel-feat:: $srctree/Documentation/features openrisc
index b3aa4d243b9362584c60a9d9e23727c4df4a4cf8..501d7c450037904bcd328274ec306287037e4964 100644 (file)
@@ -1,3 +1,3 @@
 .. SPDX-License-Identifier: GPL-2.0
 
-.. kernel-feat:: features parisc
+.. kernel-feat:: $srctree/Documentation/features parisc
index 2883dc95068173b19be3e3bbbe65f4da428255a0..57c296a9d8f30d53d89be42c0f156852659bafea 100644 (file)
@@ -1,3 +1,3 @@
 .. SPDX-License-Identifier: GPL-2.0
 
-.. kernel-feat:: features s390
+.. kernel-feat:: $srctree/Documentation/features s390
index fae48fe81e9bd013bc63e92ac586481a3ab936c6..f722af3b6c9934b8fce94f306f083947892088b8 100644 (file)
@@ -1,3 +1,3 @@
 .. SPDX-License-Identifier: GPL-2.0
 
-.. kernel-feat:: features sh
+.. kernel-feat:: $srctree/Documentation/features sh
index 96835b6d598a1a8610d9518542d03c0314922f6c..c0c92468b0fe909ee1bb01c841531c06c0fead88 100644 (file)
@@ -1,3 +1,3 @@
 .. SPDX-License-Identifier: GPL-2.0
 
-.. kernel-feat:: features sparc
+.. kernel-feat:: $srctree/Documentation/features sparc
index a33616346a388cd7ea602f70f788506913c805e4..b663f15053ce85b2f3dcb31967e6a67aa5089265 100644 (file)
@@ -1,3 +1,3 @@
 .. SPDX-License-Identifier: GPL-2.0
 
-.. kernel-feat:: features x86
+.. kernel-feat:: $srctree/Documentation/features x86
index 28dcce1759be4bf212fc3e14a7b6691e34fbfedb..6b92c7bfa19daab87c01fd9e55a384076aee3887 100644 (file)
@@ -1,3 +1,3 @@
 .. SPDX-License-Identifier: GPL-2.0
 
-.. kernel-feat:: features xtensa
+.. kernel-feat:: $srctree/Documentation/features xtensa
index ee4b95e04202d31feaf0a81619682ee64c6dcc0f..aeae73df86b0c58e02458c2f6f98cc47dbc73fb7 100644 (file)
@@ -1,3 +1,3 @@
 .. SPDX-License-Identifier: GPL-2.0
 
-.. kernel-feat:: features powerpc
+.. kernel-feat:: $srctree/Documentation/features powerpc
index 36e90144adabd18b2dce8f25ae9e5887dd66bd37..c70ef6ac2368c9a49ae22012145bdfd0f443288d 100644 (file)
@@ -1,3 +1,3 @@
 .. SPDX-License-Identifier: GPL-2.0
 
-.. kernel-feat:: features riscv
+.. kernel-feat:: $srctree/Documentation/features riscv
index bdfaa3e4b202c7d4baeaf0a28c9449a5eab265a6..27b701ed3681ed430aa421985d41fb54c7873fc1 100644 (file)
@@ -37,6 +37,8 @@ import re
 import subprocess
 import sys
 
+from os import path
+
 from docutils import nodes, statemachine
 from docutils.statemachine import ViewList
 from docutils.parsers.rst import directives, Directive
@@ -74,26 +76,33 @@ class KernelFeat(Directive):
         self.state.document.settings.env.app.warn(message, prefix="")
 
     def run(self):
+
         doc = self.state.document
         if not doc.settings.file_insertion_enabled:
             raise self.warning("docutils: file insertion disabled")
 
         env = doc.settings.env
+        cwd = path.dirname(doc.current_source)
+        cmd = "get_feat.pl rest --enable-fname --dir "
+        cmd += self.arguments[0]
+
+        if len(self.arguments) > 1:
+            cmd += " --arch " + self.arguments[1]
 
-        srctree = os.path.abspath(os.environ["srctree"])
+        srctree = path.abspath(os.environ["srctree"])
 
-        args = [
-            os.path.join(srctree, 'scripts/get_feat.pl'),
-            'rest',
-            '--enable-fname',
-            '--dir',
-            os.path.join(srctree, 'Documentation', self.arguments[0]),
-        ]
+        fname = cmd
 
-        if len(self.arguments) > 1:
-            args.extend(['--arch', self.arguments[1]])
+        # extend PATH with $(srctree)/scripts
+        path_env = os.pathsep.join([
+            srctree + os.sep + "scripts",
+            os.environ["PATH"]
+        ])
+        shell_env = os.environ.copy()
+        shell_env["PATH"]    = path_env
+        shell_env["srctree"] = srctree
 
-        lines = subprocess.check_output(args, cwd=os.path.dirname(doc.current_source)).decode('utf-8')
+        lines = self.runCmd(cmd, shell=True, cwd=cwd, env=shell_env)
 
         line_regex = re.compile("^\.\. FILE (\S+)$")
 
@@ -112,6 +121,30 @@ class KernelFeat(Directive):
         nodeList = self.nestedParse(out_lines, fname)
         return nodeList
 
+    def runCmd(self, cmd, **kwargs):
+        u"""Run command ``cmd`` and return its stdout as unicode."""
+
+        try:
+            proc = subprocess.Popen(
+                cmd
+                , stdout = subprocess.PIPE
+                , stderr = subprocess.PIPE
+                , **kwargs
+            )
+            out, err = proc.communicate()
+
+            out, err = codecs.decode(out, 'utf-8'), codecs.decode(err, 'utf-8')
+
+            if proc.returncode != 0:
+                raise self.severe(
+                    u"command '%s' failed with return code %d"
+                    % (cmd, proc.returncode)
+                )
+        except OSError as exc:
+            raise self.severe(u"problems with '%s' directive: %s."
+                              % (self.name, ErrorString(exc)))
+        return out
+
     def nestedParse(self, lines, fname):
         content = ViewList()
         node    = nodes.section()
index cec38dda8298c1c0c5993f3f1602873eac91d467..82bfac180bdc04b4fcc3effed488fc96cdd3163d 100644 (file)
@@ -5,4 +5,4 @@
 :Original: Documentation/arch/loongarch/features.rst
 :Translator: Huacai Chen <chenhuacai@loongson.cn>
 
-.. kernel-feat:: features loongarch
+.. kernel-feat:: $srctree/Documentation/features loongarch
index 0d6df97db069bb3a650208733ec17aff19f27cf3..da1b956e4a40f6a5d21988b853c0802011f1cd29 100644 (file)
@@ -10,4 +10,4 @@
 
 .. _cn_features:
 
-.. kernel-feat:: features mips
+.. kernel-feat:: $srctree/Documentation/features mips